home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 001-025 / disk_009 / proff / proff02.c < prev    next >
C/C++ Source or Header  |  1992-05-06  |  3KB  |  184 lines

  1.  
  2.  
  3.  
  4.  
  5. #include <stdio.h>
  6. #include <ctype.h>
  7. #include "defs.h"
  8. #include "debug.h"
  9.  
  10. /*
  11.  * addset - put c in array[i], if it fits, increment i
  12.  *
  13.  */
  14. int
  15. addset(c,array,i,maxsize)
  16. char c;
  17. char array[];
  18. int *i;
  19. int maxsize;
  20. {
  21.     int n,status = NO;
  22.     dprintf("addset  ");
  23.     n = *i;
  24.     if (n <= maxsize - 1) {
  25.         array[n++] = c;
  26.         status = YES;
  27.     }
  28.     *i = n;
  29.     return(status);
  30. }
  31.  
  32. /*
  33.  * addstr - add string s to str[i] if it fits, increment i
  34.  *
  35.  */
  36. int
  37. addstr(s,str,i,maxsize)
  38. char s[];
  39. char str[];
  40. int *i;
  41. int maxsize;
  42. {
  43.     int k,j,status = NO;
  44.  
  45.     dprintf("addstr  ");
  46.     j = *i;
  47.     if (j + strlen(s) <= maxsize - 1) {
  48.         for (k = 0; s[k] != EOS; k++)
  49.             str[j++] = s[k];
  50.         status = YES;
  51.     }
  52.     *i = j;
  53.     return(status);
  54. }
  55.  
  56. /*
  57.  * ctoi - convert string at in[i] to integer, increment i
  58.  *
  59.  */
  60. int
  61. ctoi(in,i)
  62. char in[];
  63. int *i;
  64. {
  65.     int j,n,sign;
  66.  
  67.     dprintf("ctoi  ");
  68.     n = 0;
  69.     for (j = *i; in[j] == ' ' || in[j] == '\t'; j++)
  70.         ;         /* skip leading garbage */
  71.     sign = 1;
  72.     if (in[j] == '+' || in[j] == '-') /* sign */
  73.         sign = (in[j++] == '+') ? 1 : -1;
  74.     for (n = 0; in[j] >= '0' && in[j] <= '9'; j++)
  75.         n = 10 * n + in[j] - '0';
  76.     *i = j;
  77.     return(sign * n);
  78. }
  79.  
  80. /*
  81.  * error - print message and terminate
  82.  *
  83.  */
  84. error(s)
  85. char s[];
  86. {
  87.     fprintf(stderr,"%s\n",s);
  88.     exit(1);
  89. }
  90.  
  91. /*
  92.  * getwrd - get non-blank word from in[i] into out, increment i
  93.  *
  94.  */
  95. int
  96. getwrd(in,i,out)
  97. char in[];
  98. int *i;
  99. char out[];
  100. {
  101.     int j,size = 0;
  102.  
  103.     for (j = *i; in[j] == '\t' || in[j] == ' '; j++)
  104.         ;         /* skip leading garbage */
  105.     while (in[j] != ' ' && in[j] != '\t' && 
  106.         in[j] != EOS && in[j] != '\n')
  107.         out[size++] = in[j++];
  108.     out[size++] = EOS;
  109.     *i = j;
  110. #ifdef DEBUG
  111.     printf("getwrd: %s\n",out);
  112. #endif
  113.     return(size);
  114. }
  115. /*
  116.  * skipbl - skip blanks, tabs at str[i], increment i
  117.  *
  118.  */
  119. skipbl(str,i)
  120. char str[];
  121. int *i;
  122. {
  123.     int n;
  124.     dprintf("skipbl  ");
  125.     n = *i;
  126.     while (str[n] == ' ' || str[n] == '\t')
  127.         n++;
  128.     *i = n;
  129. }
  130.  
  131. /*
  132.  * itoc - special version of itoa
  133.  *
  134.  */
  135. int
  136. itoc(n,str,size)
  137. int n;
  138. char str[];
  139. int size;
  140. {
  141.  
  142.     int i,j,k,sign;
  143.     char c;
  144.  
  145.     dprintf("itoc  ");
  146.     if ((sign = n) < 0)
  147.         n = -n;
  148.     i = 0;
  149.     do {
  150.         str[i++] = n % 10 + '0'; 
  151.     } 
  152.     while ((n /= 10) > 0 && i < size-2);
  153.     if (sign < 0 && i < size-1)
  154.         str[i++] = '-';
  155.     str[i] = EOS;
  156.     /*
  157.          * reverse the string and plug it back in
  158.          *
  159.  */
  160.     for (j = 0, k = strlen(str) - 1; j < k; j++, k--) {
  161.         c = str[j];
  162.         str[j] = str[k];
  163.         str[k] = c;
  164.     }
  165.     return(i);
  166. }
  167.  
  168. /*
  169.  * usage - obvious..
  170.  *
  171.  */
  172. usage()
  173. {
  174. #ifdef rainbow
  175.     fprintf(stderr,"%s %s",
  176.     "usage: proff \033[7m[+n] [-n] [-v] [-ifile] [-s] [-pon]\033[0m",
  177.     "\033[1minfile\033[0m \033[7m[outfile]\033[0m\n");
  178. #else
  179.     fprintf(stderr,
  180.     "usage: proff [+n] [-n] [-v] [-ifile] [-s] [-pon] infile [outfile]");
  181. #endif
  182.     exit(0);
  183. }
  184.